﻿using System;
using Sinacor.Infra.Common;
using System.Collections.Generic;
using Sinacor.Servico.Bovespa.Cliente.Service.DataContract;
using Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter;

namespace Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator
{
    /// <summary>
    /// Classe tradutora entre objetos ValidarClienteRequest e ValidarCliente
    /// </summary>
    public class TranslateValidarClienteRequestToParameter : 
        BaseTranslator<Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ValidarCliente, 
        Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.ValidarClienteRequest,
        List<Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ValidarCliente>,
        List<Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.ValidarClienteRequest>>
    {
        public override Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ValidarCliente Translate(Sinacor.Servico.Bovespa.Cliente.Service.DataContract.Request.ValidarClienteRequest from)
        {
            Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ValidarCliente to = new Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ValidarCliente();
            
            to.CodigoCliente = from.CodigoCliente;
            to.CodigoClienteOrdem = from.CodigoClienteOrdem;
            BusinessEntity.Enum.TipoOrdem? pTo;
             TranslateEnumTipoOrdem(from.TipoOrdem,out pTo);
             to.TipoOrdem = pTo; 
            to.TipoOrdemDistribuicao = (BusinessEntity.Enum.TipoOrdemDistribuicao)from.TipoOrdemDistribuicao;
            to.CodigoClienteOrdemAtual = from.CodigoClienteOrdemAtual; 
            return to;
        }
        public void TranslateEnumTipoOrdem(Service.DataContract.Enum.TipoOrdem? pfrom, out BusinessEntity.Enum.TipoOrdem? pTo)
        {

            pTo = null;

            switch (pfrom)
            {
                case Service.DataContract.Enum.TipoOrdem.Mercado:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Mercado;
                    break;
                case Service.DataContract.Enum.TipoOrdem.Casada:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Casada;
                    break;
                case Service.DataContract.Enum.TipoOrdem.Administrada:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Administrada;
                    break;
                case Service.DataContract.Enum.TipoOrdem.Discricionaria:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Discricionaria;
                    break;
                case Service.DataContract.Enum.TipoOrdem.Limitada:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Limitada;
                    break;
                case Service.DataContract.Enum.TipoOrdem.Financiamento:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.Financiamento;
                    break;
                case Service.DataContract.Enum.TipoOrdem.OnStop:
                    pTo = Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Enum.TipoOrdem.OnStop;
                    break;


            }
        
        }


    }
}